package com.kly.user.service;

import com.fqgj.common.api.Response;
import com.kly.user.dto.*;

import java.util.List;

public interface UserMsgService {

    List<UserMsgDto> selectByFromUserAndToUser(String fromUserId, String targetId, Integer limit);

    /**
     * 获取用户发送消息数
     */
    UserMsgDto getUserMsgNum(String fromUserId, String targetId);


    /**
     * 查询消息汇总数据
     */
    List<SumUserMsgDto> listUserMsgByFromUserCode(String fromUserId, String targetId, Integer limit);

    List<UserMsgDto> selectTodayMessages(String fromUserId, String targetId, Integer limit);

    int selectByCreateDate(UserConversationDto userConversationDto);

    Response<Integer> selectTodayMessageCount(String modelUserCode);

    /**
     * 记录用户发送消息条数，用户发送条数只与model相关
     */
    String storeMsg(String chatterUserCode, String fromUserCode, String toUserCode);

    /**
     * 记录用户发送消息条数，chatter换绑后，新绑定model数据需要清零处理
     */
    Response storeMsgForChatter(String chatterUserCode, String fromUserCode, String toUserCode);



    /**
     * 读取当天用户聊天数据
     * @param startCount
     * @return
     */
    Response<List<UserMessageCountDto>> selectTodayMessageCountInfo(String chatterCode, String modelUserCode, Integer startCount);

    /**
     * 根据chatter code 读取model
     * @param chatterCode
     * @return
     */
    Response<List<String>> selectModelCodes(String chatterCode);

    /**
     * flash chat 标志
     * @param fromUseCode
     * @param toUserCode
     * @return
     */
    void sendFlashChatFlag(String fromUseCode, String toUserCode);


    /**
     * 发送im消息
     * @param appCode
     * @param targetId
     * @param objectName
     * @param content
     * @param pushContent
     */
    void sendMessage(String appCode, String targetId, String objectName, String content, String pushContent);


    /**
     * 读取问候语 回复语
     * @param greetingCode
     * @return
     */
    Response<List<String>> getGreetingContent(String greetingCode, int limitNum, String appCode);

    /**
     * IM配置触发消息数
     * @return
     */
    List<Integer> getPopImNums(String appCode);


    /**
     * 读取发布
     * @param popImNum
     * @return
     */
    ImNoticeConfigDto getNoticeConfig(Integer popImNum, String appCode);


    /**
     * 读取用户发送消息数
     * @param userCode
     * @return
     */
    Integer selectMessageCount(String userCode);


    /**
     * 支付失败发送消息
     * @param userCode
     */
    void sendFailPayMessage(String userCode);

    Response recordModelSwitchUnreadMsg(MsgUnreadVo msgUnreadVo);
}
